Fungsi boleh dipanggil dalam medan Variables blok atau terus dalam teks respons menggunakan #{...}:
#{discord_add_role(message_from, '1465674567090704592')}
ID pelayan, saluran, peranan dan mesej Discord adalah nilai angka yang panjang. Cara termudah untuk menyalinnya adalah dengan mendayakan Settings → Advanced → Developer Mode. Selepas itu, pilihan Copy ID akan muncul dalam menu konteks mana-mana objek.
Sambungan bot diterangkan dalam artikel How to Create a Chatbot in Discord.
Di Mana Mendapatkan ID Mesej
ID mesej yang mencetuskan blok disimpan dalam pembolehubah discord_message_id. Anda tidak perlu mendapatkannya secara berasingan:
#{discord_delete_message(discord_message_id)}
Jika anda memerlukan data yang tidak tersedia dalam pembolehubah yang telah ditetapkan, webhook penuh tersedia dalam pembolehubah discord_webhook. Ia diisi apabila sebarang nilai diberikan kepada pembolehubah save_webhook:
data = discord_webhook["data"]
msg_id = data["id"]
result = discord_reply_to_message(msg_id, "Ini adalah balasan kepada mesej")
Pembolehubah Dicipta Secara Automatik
Pembolehubah ini diisi secara automatik untuk setiap peristiwa dan tidak memerlukan sebarang konfigurasi tambahan.
| Pembolehubah | Penerangan | Contoh |
|---|---|---|
guild_id |
ID Pelayan | 1465674567090704591 |
discord_event |
Jenis peristiwa sebagai satu perkataan | message |
discord_message_id |
ID Mesej dengan awalan mid
|
mid1465674569095319625 |
message_from |
ID pengarang peristiwa dengan awalan uid
|
uid413984787162726410 |
from_username |
Nama pengguna Discord pengarang | 00rei |
from_name |
Nama paparan pengarang dalam sembang | Rus |
username |
Nama pengguna untuk mesej terus kepada bot | 00rei |
is_bot |
1 jika pengarang peristiwa adalah bot lain |
0 |
nickname |
Nama panggilan pelayan; kosong jika tidak ditetapkan | Moderator |
roles |
Senarai ID peranan pengarang | ["1465674567090704592"] |
is_admin |
1 jika pengguna adalah pentadbir atau pemilik pelayan |
1 |
reply_from |
ID pengarang mesej yang dibalas | uid493121376652230668 |
reply_from_username |
Nama pengguna pengarang yang dibalas | _deikin |
reply_from_name |
Nama paparan pengarang yang dibalas | Rus |
reply_to_bot |
1 jika balasan adalah kepada bot |
0 |
reply_message_id |
ID mesej yang dibalas | mid1534837349219958804 |
reply_text |
Teks mesej yang dibalas | siapa yang bertugas hari ini? |
Awalan uid, cid, dan mid adalah sebahagian daripada nilai. Hantar pembolehubah ini kepada fungsi sebagaimana adanya; anda tidak perlu mengeluarkan awalan.
from_name vs. from_username
from_name mengandungi nama yang harus digunakan untuk menyapa pengguna dalam sembang:
- Nama panggilan pelayan, jika ditetapkan.
- Nama paparan akaun.
- Nama pengguna.
Ini adalah pembolehubah yang disyorkan untuk digunakan dalam ucapan kerana from_username mungkin kelihatan seperti _deikin atau 00rei.
Pembolehubah reply_* diisi hanya apabila mesej masuk adalah balasan kepada mesej lain. Untuk mesej biasa, kesemuanya dikosongkan.
Oleh itu, syarat berikut membezakan balasan daripada mesej biasa dengan pasti:
#{reply_from != ''}
Pembolehubah nickname, roles, dan is_admin merujuk kepada pengarang peristiwa semasa.
Discord tidak menyediakan data ini untuk peristiwa reaksi, jadi pemeriksaan pentadbir harus dilakukan pada peristiwa mesej atau arahan slash.
Teks mesej masuk disimpan dalam pembolehubah standard question, sama seperti saluran lain.
Peristiwa
Selain mesej biasa, peristiwa perkhidmatan juga dihantar ke corong.
Teksnya disimpan dalam pembolehubah question, jadi anda boleh mengendalikannya menggunakan syarat teks biasa.
discord_event |
Teks dalam question
|
Bila Ia Berlaku |
|---|---|---|
message |
Teks mesej | Seorang ahli menghantar mesej |
message_edit |
Teks mesej yang dikemas kini | Mesej diedit |
interaction |
/warn @user spam |
Arahan slash digunakan atau butang diklik |
reaction_add |
new_like ❤️ uid413984787162726410 |
Reaksi ditambah |
reaction_remove |
reaction_remove ❤️ uid413984787162726410 |
Reaksi dibuang |
message_delete |
message_delete mid1465674569095319625 |
Mesej dipadam |
messages_delete_bulk |
messages_delete_bulk 12 |
Berbilang mesej dipadam |
member_join |
member_join uid413984787162726410 |
Seorang ahli menyertai pelayan |
member_leave |
member_leave uid413984787162726410 |
Seorang ahli meninggalkan pelayan |
member_update |
member_update uid413984787162726410 |
Nama panggilan atau peranan ahli berubah |
member_ban |
member_ban uid413984787162726410 |
Seorang ahli diharamkan |
member_unban |
member_unban uid413984787162726410 |
Seorang ahli dinyahharamkan |
Untuk reaksi tersuai, ID emoji tersuai digunakan sebagai ganti emoji itu sendiri:
new_like beer:1479419477396291696 uid413984787162726410
Lihat bahagian Reactions untuk butiran.
Jika blok harus dicetuskan hanya untuk mesej biasa yang dihantar oleh ahli, tambah syarat berikut:
discord_event == 'message'
Ini menapis semua peristiwa perkhidmatan sekaligus.
Memeriksa hanya teks peristiwa adalah tidak boleh dipercayai kerana ahli boleh menghantar mesej secara manual seperti member_join.
Penting:
member_updatedicetuskan oleh sebarang kemas kini ahli, termasuk peranan yang diberikan oleh bot itu sendiri. Blok yang bertindak balas kepadamember_updatedan memberikan peranan boleh mencipta gelung, jadi syarat sedemikian harus sentiasa dihadkan dengan sewajarnya.
Mesej
| Fungsi | Penerangan |
|---|---|
discord_send_message(channel_id, text) |
Hantar mesej ke mana-mana saluran |
discord_send_dm(user_id, text) |
Hantar mesej terus kepada ahli |
discord_reply_to_message(message_id, text) |
Balas kepada mesej |
discord_edit_message(message_id, text) |
Edit mesej yang dihantar oleh bot |
discord_delete_message(message_id) |
Padam mesej |
discord_bulk_delete_messages(channel_id, message_ids) |
Padam berbilang mesej sekaligus |
discord_get_message(channel_id, message_id) |
Dapatkan semula mesej |
discord_pin_message(message_id) |
Semat mesej |
discord_unpin_message(message_id) |
Nyahsemat mesej |
Had Discord: Tiada had masa untuk mengedit atau memadam mesej anda sendiri. Pemadaman pukal hanya berfungsi untuk mesej yang berusia kurang daripada 14 hari, dan anda boleh memadam antara 2 hingga 100 mesej pada satu masa.
Reaksi
| Fungsi | Penerangan |
|---|---|
discord_send_reaction(message_id, reaction) |
Tambah reaksi |
discord_delete_reaction(message_id, reaction, user_id) |
Buang reaksi. Jika user_id ditinggalkan, reaksi bot dibuang |
Parameter reaction menerima sama ada emoji biasa, seperti ❤️, atau ID emoji tersuai pelayan.
Di Mana Mendapatkan ID Reaksi Tersuai
Tambah reaksi tersuai yang diperlukan ke mana-mana mesej dalam saluran.
Panggil balik seperti ini akan muncul dalam sembang:
new_like beer:1479419477396291696 uid413984787162726410
Di sini:
beer:1479419477396291696
adalah ID reaksi.
Anda boleh menyalinnya dan menggunakannya dalam fungsi reaksi:
#{discord_send_reaction(discord_message_id, 'beer:1479419477396291696')}
Emoji biasa muncul dalam panggil balik sebagaimana adanya:
new_like ❤️ uid413984787162726410
di mana uid413984787162726410 adalah ID ahli yang menambah reaksi.
Moderasi
| Fungsi | Penerangan |
|---|---|
discord_timeout_member(user_id, seconds) |
Tamatkan masa ahli untuk bilangan saat yang ditentukan, sehingga 28 hari |
discord_remove_timeout(user_id) |
Buang tamat masa lebih awal |
discord_kick_member(user_id) |
Tendang ahli dari pelayan; mereka boleh kembali menggunakan jemputan |
discord_ban_member(user_id, delete_message_seconds) |
Haramkan ahli; hujah kedua menentukan berapa saat sejarah mesej yang akan dipadam, sehingga 7 hari |
discord_unban_member(user_id) |
Nyahharamkan ahli |
Discord tidak membenarkan bot untuk memoderasi ahli yang peranannya lebih tinggi daripada peranan bot. Pemilik pelayan juga tidak boleh dimoderasi.
Peranan dan Ahli
| Fungsi | Penerangan |
|---|---|
discord_add_role(user_id, role_id) |
Berikan peranan |
discord_remove_role(user_id, role_id) |
Buang peranan |
discord_get_roles() |
Dapatkan peranan pelayan dan ID mereka |
discord_get_member(user_id) |
Dapatkan data ahli, termasuk nama panggilan, peranan, dan tarikh menyertai |
discord_set_nickname(user_id, nickname) |
Tukar nama panggilan pelayan ahli |
Peranan bot mestilah lebih tinggi daripada peranan yang diberikannya.
Peranan @everyone dan peranan yang diuruskan oleh integrasi, termasuk peranan kepunyaan bot lain, tidak boleh diberikan.
Saluran dan Tiket
| Fungsi | Penerangan |
|---|---|
discord_create_channel(name, type, parent_id, permission_overwrites) |
Cipta saluran |
discord_delete_channel(channel_id) |
Padam saluran |
discord_set_channel_permission(channel_id, target_id, allow, deny, type) |
Benarkan atau nafikan kebenaran saluran |
discord_create_invite(channel_id, max_age, max_uses) |
Cipta pautan jemputan |
discord_get_invites() |
Dapatkan pautan jemputan pelayan |
Untuk discord_create_channel, type lalai adalah:
| Nilai | Jenis Saluran |
|---|---|
0 |
Saluran teks |
2 |
Saluran suara |
4 |
Kategori |
Anda boleh menghantar ID kategori dalam parent_id untuk mencipta saluran dalam kategori tersebut.
Untuk discord_set_channel_permission, hujah terakhir menentukan siapa yang menerima kebenaran:
| Nilai | Sasaran |
|---|---|
1 |
Ahli |
0 |
Peranan |
Parameter allow dan deny menerima nilai berikut:
| Nilai | Kebenaran |
|---|---|
1024 |
Lihat saluran |
2048 |
Hantar mesej |
3072 |
Lihat saluran dan hantar mesej |
65536 |
Baca sejarah mesej |
Untuk discord_create_invite, jangka hayat jemputan dinyatakan dalam saat.
Contohnya:
86400
bermaksud 24 jam.
Nilai max_uses sebanyak 0 bermaksud penggunaan tanpa had.
Arahan Slash
| Fungsi | Penerangan |
|---|---|
discord_get_commands() |
Dapatkan arahan yang didaftarkan pada pelayan |
discord_set_commands(commands) |
Gantikan keseluruhan set arahan |
discord_set_commands menerima senarai arahan:
#{discord_set_commands('[
{
"name": "rules",
"description": "Tunjukkan peraturan pelayan"
},
{
"name": "warn",
"description": "Keluarkan amaran",
"options": [
{
"type": 6,
"name": "user",
"description": "Pengguna",
"required": true
},
{
"type": 3,
"name": "reason",
"description": "Sebab",
"required": false
}
]
}
]')}
Keperluan Discord
-
namemesti mengandungi aksara huruf kecil sahaja, tanpa ruang, dan mestilah antara 1 hingga 32 aksara panjang. -
descriptiondiperlukan dan mestilah antara 1 hingga 100 aksara panjang. - Pilihan yang diperlukan mesti muncul sebelum pilihan pilihan.
- Menghantar senarai kosong mengeluarkan semua arahan bot dari pelayan.
Jenis Pilihan
| Jenis | Penerangan |
|---|---|
3 |
Rentetan |
4 |
Integer |
5 |
Boolean |
6 |
Ahli |
7 |
Saluran |
8 |
Peranan |
Apabila arahan dipanggil, ia dihantar ke corong sebagai rentetan seperti:
/warn @user spam
Dengan kata lain, nama arahan dan nilai pilihan dipisahkan oleh ruang.
Anda boleh mengendalikannya menggunakan syarat teks biasa.
Fungsi berasingan untuk butang tidak diperlukan. Butang dikonfigurasikan dalam blok respons biasa, dan klik butang diterima dengan cara yang sama seperti arahan slash: nilai butang muncul dalam teks.
Mata dan Papan Pendahulu
Integrasi Discord merangkumi sistem penghargaan terbina dalam. Mata diberikan kepada pengarang mesej yang dipetik.
Anda boleh menggunakannya untuk membina tahap, pangkat, dan papan pendahulu.
| Fungsi | Penerangan |
|---|---|
discord_add_thanks_score(value) |
Tambah mata kepada pengarang mesej yang dipetik |
discord_add_thanks_score_for_answer(value) |
Tambah mata kepada ahli yang membalas |
discord_minus_thanks_score(value) |
Buang mata |
discord_get_score(user_id) |
Kembalikan mata ahli sebagai nombor. Tanpa hujah, gunakan pengarang acara |
discord_get_level(user_id, points_per_level) |
Dapatkan tahap ahli. Ambang lalai: 100 mata setiap tahap |
discord_get_user_info(user_id) |
Dapatkan mata, kedudukan papan pendahulu, dan nama sebagai satu objek |
discord_get_top(count, shift, humanize, delimiter) |
Dapatkan papan pendahulu |
Untuk discord_get_top:
-
count— bilangan baris untuk dikembalikan; -
shift— bilangan baris untuk dilangkau, berguna untuk penomboran halaman; -
humanize=true— mengembalikan teks sedia untuk dipaparkan; -
delimiter— pemisah antara nama ahli dan mata.
Apabila membandingkan mata dalam syarat blok, gunakan discord_get_score. Fungsi ini mengembalikan nombor, jadi perbandingan berangka berfungsi seperti yang dijangka.
Contoh
Ucap Selamat Datang kepada Ahli Baru melalui Mesej Langsung
Syarat blok:
member_join
Dalam medan Pembolehubah:
discord_send_dm(
message_from,
'Hi, #{from_name}! Check out the pinned rules.'
)
Padam Mesej yang Mengandungi Perkataan Henti dan Masa Tamat Ahli selama 24 Jam
Syarat blok: senarai perkataan henti.
Syarat tambahan:
is_admin != 1
Fungsi:
discord_delete_message(discord_message_id)
discord_timeout_member(message_from, 86400)
Berikan Peranan untuk Reaksi terhadap Mesej Tertentu
Syarat blok:
new_like 🍕
Syarat tambahan:
contains(discord_message_id, '1534927170965602324')
Fungsi:
discord_add_role(
message_from,
'1465674567090704592'
)
Cipta Saluran Tiket Peribadi daripada Butang
ticket = discord_create_channel(
'ticket-' + from_username
)
ticket_channel = get(
get(ticket, 'data'),
'id'
)
discord_set_channel_permission(
ticket_channel,
guild_id,
None,
1024,
0
)
discord_set_channel_permission(
ticket_channel,
message_from,
3072,
None,
1
)
discord_send_message(
ticket_channel,
'Describe your issue in a single message.'
)
Baris kebenaran pertama menyembunyikan saluran daripada semua orang (guild_id mewakili peranan @everyone di sini).
Baris kedua menjadikan saluran tersedia kepada ahli yang mencipta tiket.
Berikan Mata untuk Terima Kasih dan Berikan Peranan Berdasarkan Tahap
Syarat blok:
thanks;thx;thank you
Syarat tambahan:
reply_from != '' and reply_from != message_from and reply_to_bot != 1
Fungsi:
discord_add_thanks_score(1)
if (discord_get_level(reply_from) >= 1) {
discord_add_role(
reply_from,
'1465674567090704592'
)
}
Syarat:
reply_from != message_from
menghalang ahli daripada memberikan mata kepada diri sendiri.
Syarat:
reply_to_bot != 1
menghalang mata daripada diberikan kepada bot.
Tunjukkan Mata Anda dengan Arahan
Syarat blok:
/xp
Dalam medan Pembolehubah:
points = discord_get_score()
lvl = discord_get_level()
Teks respons:
#{from_name}, you have #{points} XP · Level #{lvl}
Tunjukkan Papan Pendahulu dengan Arahan
Syarat blok:
/top
Teks respons:
🏆 XP Leaderboard:
#{discord_get_top(10, 0, true, ' — ')}